Firebird: StoredProc nebo View

Otázka od: Jiri Fait

13. 8. 2004 13:25

Ahoj

Resim, mozna zbytecne, problem, zda je lepsi pouzivat, tam kde to jde, View
nebo vsude pouzivat StoredProc.
Je nejaky vykonnostni rozdil v techto pristupech k datum?
Je rozdil v zatizeni serveru?

Jedna se o databazi na Firebird 1.5

Dekuji



Odpovedá: David Fajfr

13. 8. 2004 14:06

> Resim, mozna zbytecne, problem, zda je lepsi pouzivat, tam kde to jde,
View
> nebo vsude pouzivat StoredProc.
> Je nejaky vykonnostni rozdil v techto pristupech k datum?
> Je rozdil v zatizeni serveru?


Ahoj,

me se jevi nejlepsi view nepouzivat vubec a SP jen tam, kde potrebujes
nejake specialni funkce, ktere nedokazes udelat obycejnym dotazem do
tabulek.

View ma velkou nevyhodu v tom, ze kdyz potrebujes delat zmeny tabulky, musis
view zrusit a pak opet vytvorit, coz je pri intenzivnim vyvoji nekdy docela
pakarna.

Procedura zase neni moc idealni, pokud nedelas vyber zaznamu primo v ni, ale
v aplikaci. Takze kdyz predem nevis podle ceho uzivatel bude chtit vybirat
data, budes muset udelat proceduru, ktera v sobe nema zadna vyberova
kriteria a ta bude hodne pomala - bude srotit vzdycky vsechny zaznamy ikdyz
uzivatel chce jen par.

FB 1.5 uz ma EXECUTE STATEMENT, pomoci ceho by jsi mohl i v procedure delat
dynamicke selecty, ale tam jsem se jeste nedostal  

David



Odpovedá: Benda Lukas

17. 8. 2004 18:10


>me se jevi nejlepsi view nepouzivat vubec a SP jen tam, kde potrebujes
>nejake specialni funkce, ktere nedokazes udelat obycejnym dotazem do
>tabulek.
>
>View ma velkou nevyhodu v tom, ze kdyz potrebujes delat zmeny tabulky, musis
>view zrusit a pak opet vytvorit, coz je pri intenzivnim vyvoji nekdy docela
>pakarna.
>
>Procedura zase neni moc idealni, pokud nedelas vyber zaznamu primo v ni, ale
>v aplikaci. Takze kdyz predem nevis podle ceho uzivatel bude chtit vybirat
>data, budes muset udelat proceduru, ktera v sobe nema zadna vyberova
>kriteria a ta bude hodne pomala - bude srotit vzdycky vsechny zaznamy ikdyz
>uzivatel chce jen par.
>
>FB 1.5 uz ma EXECUTE STATEMENT, pomoci ceho by jsi mohl i v procedure delat
>dynamicke selecty, ale tam jsem se jeste nedostal  
>
Ahoj uznavam, ze mas pravdu v onech nevyhodach, ale existuji i
gyganticke vyhody View a StoredProc, ja osobne vlastne uzivatele
nepoustim k tabulkam jinak nez pres View a StoredProc. Kdyz je nechaz
zapisovat na primo udelaji ti v datech brutalni maglajz. Taky nerad
primo v aplikaci pozivam spojovani vice tabulek, pak chces to same
spojeni volat z vice ruznych mist, a kopirujes spojeni na trikrat.
Nakonec provedes zmenu a uz nedohledas, kde vsude to spojeni mas a musis
ho predelat.

Idealni je trivrstva architektura, pokud to ale nejde, pak jsem
zastanvem tohoo, aby se co nejvice prace s daty odehravala na servru.

Ohledne View a StoredProc se tyce, tak vsude tam kde to jde a vyhovuje
tak davat pohledy, protoze narozdil od procedur se nevytvareji pri
kazdem dotazu. Pohledy jsou takove "docasne" tabulky, kdezdo procedura
se spousti pokazde znova od nuly.

Odpovedá: Richard Kejval

18. 8. 2004 8:20

> Ohledne View a StoredProc se tyce, tak vsude tam kde to jde a vyhovuje
> tak davat pohledy, protoze narozdil od procedur se nevytvareji pri
> kazdem dotazu. Pohledy jsou takove "docasne" tabulky, kdezdo procedura
> se spousti pokazde znova od nuly.

Rekl bych, ze View i SP u FB neni nic jineho nez kus prekompilovaneho kodu,
ktery pak stejne musi vybirat data, takze bych dost pochyboval o terminu
"docasna tabulka". Vyhoda SP je, ze muzu zadat vstupni parametry podle,
kterych muzu omezovat. Prace s 100 tis tabulkami je pro view dost
nepouzitelne,
protoze prvne spojuje a pak teprve omezuje a bohuzel, bez pouziti indexu  
Podle mne jedina vyhoda View je, ze se na nej daji navesit triggery a pri
aktualizaci dat, je pak rozhodit do vice tabulek, ale to se da zvladnout i
ve
framworku, takze u nas View vubec nepouzivame a nijak nam nechybi. Mluvim
pouze o FB ! Jestli se mylim, tak doufam, ze mi to objasni fundovanejsi
odbornici.


Odpovedá: David Fajfr

18. 8. 2004 9:04

> gyganticke vyhody View a StoredProc, ja osobne vlastne uzivatele
> nepoustim k tabulkam jinak nez pres View a StoredProc. Kdyz je nechaz
> zapisovat na primo udelaji ti v datech brutalni maglajz. Taky nerad

Puvodni dotaz byl o cteni dat. Pri zapisu s tebou souhlasim, ze bude lepsi a
bezpecnejsi procedura.


> primo v aplikaci pozivam spojovani vice tabulek, pak chces to same
> spojeni volat z vice ruznych mist, a kopirujes spojeni na trikrat.

Muzes ho mit v nejake konstante.

> Nakonec provedes zmenu a uz nedohledas, kde vsude to spojeni mas a musis
> ho predelat.

A kdyz provedes zmenu View, tak nemusis hledat, kde vsude v aplikaci ho mas
pouzite, abys zkontroloval spravnost dat?

David